iT邦幫忙

2022 iThome 鐵人賽

DAY 24
1
自我挑戰組

開始系統測試系列 第 24

Day 24 | 白箱測試

  • 分享至 

  • xImage
  •  
  1. 白箱測試方法

    • 邏輯覆蓋法
      • 語句覆蓋
      • 判斷覆蓋
      • 條件覆蓋
      • 判斷-條件覆蓋
      • 條件組合覆蓋
    • 路徑覆蓋法
  2. 白箱測試步驟
    1.得到需求,並且畫出程式流程圖
    https://ithelp.ithome.com.tw/upload/images/20221009/20140878cyRU4RocFs.jpg
    2.畫出控制流圖
    https://ithelp.ithome.com.tw/upload/images/20221009/201408780Ztzty3fGE.jpg
    3.選擇覆蓋方法設計測試案例

  3. 語句覆蓋法C0

    • 目標
      • 程式中每個可執行語句至少被執行一次
    • 覆蓋率
      • 被執行的語句數/所有可能的語句數
      • 被執行的路徑數/所有可能的路徑數
        https://ithelp.ithome.com.tw/upload/images/20221009/20140878WsGUWmxob8.jpg
    • 案例
      • a=2,b=1,c=6
      • 案例對語句覆蓋率:100%
      • 案例對路徑覆蓋率:25%
    • 語句覆蓋能發現語句錯誤
      https://ithelp.ithome.com.tw/upload/images/20221009/20140878pzjDEGb9fy.jpg
    • 語句覆蓋不能發現邏輯錯誤/條件錯誤
      https://ithelp.ithome.com.tw/upload/images/20221009/20140878wct0AshHuG.jpg
  4. 分支/判斷覆蓋C1

    • 目標
      • 程式中每個判斷的T分支和F分支至少執行一次
        https://ithelp.ithome.com.tw/upload/images/20221009/20140878NaUSwgHjio.jpg
    • 案例
      • a=2,b=0,c=6
      • a=-1,b-1,c=1
      • 案例對語句的覆蓋率:100%
      • 案例對路徑的覆蓋率:50%
    • 分支/判斷覆蓋能發現邏輯錯誤
      https://ithelp.ithome.com.tw/upload/images/20221009/2014087852NaFz3Cw6.jpg
    • 分支/判斷覆蓋不能發現組合判斷中的錯誤
      https://ithelp.ithome.com.tw/upload/images/20221009/201408786nTmPXTpx5.jpg
  5. 條件覆蓋C2

    • 目標
      • 程式中每個判斷中每個條件的可能取值至少滿足一次
    • 未必比C1更全面
    • 不能發現邏輯錯誤
    • 案例
      • 判斷3:(a>0 and b>0)
      • 判斷6:(a>1 or c>1)
      • 原子條件集:
        • a>0
        • b>0
        • a>1
        • c>1
      • 要求:各原子條件True、False各一次
      • {a=-1,b=2,c=3}
        • 原子條件:a>0(F);b>0(T);a>1(F);c>1(T)
        • 判斷條件:判斷3(F);判斷6(T)
      • {a=2,b=-1,c=-2}
        • 原子條件:a>0(T);b>0(F);a>1(T);c>1(F)
        • 判斷條件:判斷3(F);判斷6(T)
  6. 判斷-條件覆蓋C1+C2

    • 目標
      • 每個條件中的所有可能取值至少執行一次,同時,每個判斷的可能結果至少執行一次
    • 可能會導致某些條件掩蓋了另一些條件
    • 案例
      • 要求:各原子條件True、False各一次;各判斷True、False各一次
      • {a=2,b=1,c=4}
        • 原子條件:a>0(T);b>0(T);a>1(T);c>1(T)
        • 判斷條件:判斷3(T);判斷6(T)
      • {a=-1,b=-2,c=-3}
        • 原子條件:a>0(F);b>0(F);a>1(F);c>1(F)
        • 判斷條件:判斷3(F);判斷6(F)
  7. 條件組合覆蓋/多條件覆蓋C3

    • 目標
      • 每個判斷中的所有的條件取值組合至少執行一次
    • 比C2全面
    • 案例
      • 要求:
        • a>0時,b>0真假各一次
        • a≤0時,b>0真假各一次
        • a>1時,c>1真假各一次
        • a≤1時,c>1真假各一次
      • {a=2,b=1,c=6}
        • 原子條件:a>0(T);b>0(T);a>1(T);c>1(T)
        • 判斷條件:判斷3(T);判斷6(T)
      • {a=2,b=-1,c=-2}
        • 原子條件:a>0(T);b>0(F);a>1(T);c>1(F)
        • 判斷條件:判斷3(F);判斷6(T)
      • {a=-1,b=2,c=3}
        • 原子條件:a>0(F);b>0(T);a>1(F);c>1(T)
        • 判斷條件:判斷3(F);判斷6(T)
      • {a=-1,b=-2,c=-3}
        • 原子條件:a>0(F);b>0(F);a>1(F);c>1(F)
        • 判斷條件:判斷3(F);判斷6(F)
          . 路徑覆蓋C4
    • 目標
      • 案例覆蓋程式中所有可能的執行路徑
    • 不切實際
      • 因為涉及到相當長和幾乎無窮盡的路徑數
      • 任何可能的循環在程式段中都被視為可能的路徑
    • 路徑覆蓋優化
      • McCabe的基路徑方法
        https://ithelp.ithome.com.tw/upload/images/20221009/20140878QJrn63PQMk.jpg

      • 從源節點到匯節點的線性獨立路徑數

        • V(G) = e-n+2p = 10-7+2 = 5
        • 當規模很小時,我們可以很值觀的標示獨立路徑
      • 以下是獨立路徑數,以節點/邊序列表示:

        • P1:A,B,C,G/1,4,9
        • P2:A,B,C,D,C,G/1,4,3,4,9
        • P3:A,B,E,F,G/1,5,8,10
        • P4:A,D,E,F,G/2,6,8,10
        • P5:A,D,F,G/2,7,10

上一篇
Day 23 | 測試方法(二) - 靜態分析
下一篇
Day 25 | 介面測試和易用性測試
系列文
開始系統測試30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言